﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BUS;
using DTO;
namespace GUI
{
    public partial class FormLapPhieuHoaDon : Form
    {
        public static int ID_BAN_AN = 0;
        long ThanhTien = 0;
        DateTime dtGioVao;
        public FormLapPhieuHoaDon()
        {
            InitializeComponent();
            BanAnBUS bs = new BanAnBUS();
            BanAnDTO banAn = bs.LayBanAn(FormXemTinhTrangBan.tempIDBanAn);
            lblBan.Text = banAn.Ten_Ban_An;
            ID_BAN_AN= FormXemTinhTrangBan.tempIDBanAn;

            TamTinhBUS ttBUS = new TamTinhBUS();
            List<MonAnDTO> listTAMTINH = new List<MonAnDTO>();
            listTAMTINH = ttBUS.DanhSachMonAnTamTinhTheoBanAn(ID_BAN_AN);
            int STT = 0;
            foreach( MonAnDTO singleRecord in listTAMTINH )
            {
                dataGridView1.Rows.Add(STT + 1, singleRecord.Id_Mon_An, singleRecord.Ten_Mon_An,string.Format("{0:#,##0 VND;(#,##0 VND);''}", singleRecord.Don_Gia), singleRecord.So_Luong, string.Format("{0:#,##0 VND;(#,##0 VND);''}", singleRecord.So_Luong * singleRecord.Don_Gia));
                ThanhTien = ThanhTien + singleRecord.So_Luong * singleRecord.Don_Gia;
                STT++;
            }

            // hiện Tổng số tiền chưa VAT và khuyến mãi
            txtTongTien.Text = string.Format("{0:#,##0 VND;(#,##0 VND);''}", ThanhTien);

            // Hiện Ngày Lập và Giờ Vào
            GioVaoBUS gvBUS = new GioVaoBUS();
            GioVaoDTO gvDTO = new GioVaoDTO();
            gvDTO = gvBUS.LayGioVaoTheoBan(FormXemTinhTrangBan.tempIDBanAn);
            dtGioVao = gvDTO.GioVao;
            string NgayLap = dtGioVao.Day + "/" + dtGioVao.Month + "/" + dtGioVao.Year;
            string GioVao = dtGioVao.Hour + ":" + dtGioVao.Minute;
            lbnNgayLAp.Text = NgayLap;
            lbGioVao.Text = GioVao;

        }

        private void FormLapPhieuHoaDon_Load(object sender, EventArgs e)
        {

        }
        int VAT;
        int KHUYENMAI;
        long tempTongTien;
        private void chkTinhTien_CheckedChanged(object sender, EventArgs e)
        {
            if (chkTinhTien.Checked)
            {
                btnTinhTien.Enabled = true;
                tempTongTien = ThanhTien;
                try
                {
                    if (txtVAT.Text == "")
                    {
                        VAT = 0;
                    }
                    else
                    {
                        VAT = Convert.ToInt32(txtVAT.Text);
                    }
                    if (txtKhuyenMai.Text == "")
                    {
                        KHUYENMAI = 0;
                    }
                    else
                    {
                        KHUYENMAI = Convert.ToInt32(txtKhuyenMai.Text);
                    }

                }
                catch (Exception ex)
                {
                    MessageBox.Show("ô Khuyến Mãi hoặc VAT có chứa ký tự, vui lòng nhập lại!");
                    return;
                }


                long nKHUYENMAI = Convert.ToInt64((float)(KHUYENMAI * tempTongTien) / 100);
                tempTongTien = tempTongTien - nKHUYENMAI;
                long nVAT = Convert.ToInt64((float)(VAT * tempTongTien) / 100);
                tempTongTien = tempTongTien + nVAT;
                string MoneyFormat = string.Format("{0:#,##0 VND;(#,##0 VND);''}", tempTongTien);
                txtThanhTien.Text = MoneyFormat;
                

                // Khóa 2 ô Khuyến Mãi và VAT lại
                txtKhuyenMai.Enabled = false;
                txtVAT.Enabled = false;
            }
            else
            {
                btnTinhTien.Enabled = false;
                txtKhuyenMai.Enabled = true;
                txtVAT.Enabled = true;
                txtThanhTien.Text ="";
            }
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnThemMonAn_Click(object sender, EventArgs e)
        {
            FormChonMonAn1 f = new FormChonMonAn1();
            f.Show();
            this.Close();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btnTinhTien_Click(object sender, EventArgs e)
        {
            
           
            // Ghi xuống bảng hóa đơn
            DateTime dtGioRa = DateTime.Now;
            HoaDonDTO hdDTO = new HoaDonDTO();
            hdDTO.Id_Ban_An = ID_BAN_AN;
            hdDTO.Gio_Vao = dtGioVao;
            hdDTO.Gio_Ra = dtGioRa;
            hdDTO.Ngay_Lap =  dtGioRa.Date;
            HoaDonBUS hdBUS = new HoaDonBUS();
            hdBUS.GhiXuongBangHoaDon(hdDTO);

            // Ghi xuống bảng chi tiết hóa đơn
            HoaDonBUS hdBUS2 = new HoaDonBUS();
            int ID_Hoa_Don_Moi_Nhat = hdBUS2.IdHoaDonMoiNhat();

            TamTinhBUS ttBUS = new TamTinhBUS();
            List<MonAnDTO> listTamTinh = new List<MonAnDTO>();
            listTamTinh = ttBUS.DanhSachMonAnTamTinhTheoBanAn(ID_BAN_AN);
            foreach(MonAnDTO singleRecord in listTamTinh)
            {
                ChiTietHoaDonDTO singleRecordCT = new ChiTietHoaDonDTO();
                singleRecordCT.Id_Hoa_Don = ID_Hoa_Don_Moi_Nhat;
                singleRecordCT.Id_Mon_An = singleRecord.Id_Mon_An;
                singleRecordCT.So_Luong = singleRecord.So_Luong;
                singleRecordCT.Don_Gia = singleRecord.Don_Gia;
                singleRecordCT.Thanh_Tien = singleRecord.Don_Gia * singleRecord.So_Luong;
                ChiTietHoaDonBUS ctHDBUS = new ChiTietHoaDonBUS();
                ctHDBUS.InsertBangChiTiethoaDon(singleRecordCT);
            }
            
            // Ghi xuống bảng Tính tiền
            TinhTienDTO ttDTO = new TinhTienDTO();
            ttDTO.Khuyen_Mai = KHUYENMAI.ToString();
            ttDTO.Tong_So_Tien = ThanhTien;
            ttDTO.Thanh_Tien = tempTongTien;
            ttDTO.Id_Hoa_Don = ID_Hoa_Don_Moi_Nhat;

            TinhTienBUS ttBUS1 = new TinhTienBUS();
            ttBUS1.GhiXuongBangTinhTien(ttDTO,2);

            // Cập nhập trạng thái bàn ăn của bảng Bàn Ăn là còn trống
            BanAnBUS baBUS = new BanAnBUS();
            baBUS.CapNhapTrangThaiBanAn(ID_BAN_AN, 0);
            // Xóa dòng dữ liệu Giờ Vào
            GioVaoBUS gvBUSn = new GioVaoBUS();
            gvBUSn.XoaGioVao(ID_BAN_AN);
            // Xóa bảo tạm tính
            TamTinhBUS ttBUSn = new TamTinhBUS();
            ttBUSn.XoaTamTinh(ID_BAN_AN);

            MessageBox.Show("Tính Tiền Thành Công!");
            this.Close();
    
            
        }
    }
}
